package com.example.toutiao.view

import android.content.Context
import android.graphics.drawable.Drawable
import android.text.Editable
import android.text.TextUtils
import android.text.TextWatcher
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.appcompat.widget.AppCompatEditText
import androidx.core.content.ContextCompat
import com.example.toutiao.R

/**
 * 复写 输入框
 */
class LoginEditText @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = R.attr.editTextStyle
) : AppCompatEditText(context, attrs, defStyleAttr) {
    private var draw: Drawable? = null
    private var drawShow: Drawable? = null


    /**
     * 初始化 获取本地资源 图标
     * 这里自行设置的原因是 图片资源的200x200 导致 过大，而又不能直接设置
     * 通过属性设置minimumWidth  minimumHeight 于是就再此设置啦
     */
    init {
        draw = ContextCompat.getDrawable(context, R.mipmap.icon_clear)
        draw?.setBounds(0, 0, 20, 20)
        addTextChangedListener(TextWatcherEditText())
    }

    /**
     * 判断是否展示图标
     */
    private fun isShow(isShow: Boolean) {
        drawShow = if (isShow) {
            draw
        } else {
            null
        }
        // 给输入框的右边设置图标
        setCompoundDrawables(
            compoundDrawables[0],
            compoundDrawables[1],
            drawShow,
            compoundDrawables[3]
        )
    }

    /**
     * 监听触摸时间
     */
    override fun onTouchEvent(event: MotionEvent?): Boolean {
        if (event!!.action == MotionEvent.ACTION_DOWN) {
            val isDelete: Boolean =
                event.x > (width - totalPaddingRight) && event.x < (width - paddingRight) && event.y > 0 && event.y < height
            if (isDelete) {
                setText("")
            }
        }
        return super.onTouchEvent(event)
    }

    private inner class TextWatcherEditText : TextWatcher {
        /**
         * 下面的方法是复写 TextWatcher的三个方法
         */
        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

        }

        override fun onTextChanged(
            text: CharSequence?,
            start: Int,
            lengthBefore: Int,
            lengthAfter: Int
        ) {
            if (TextUtils.isEmpty(text.toString())) {
                isShow(false)
            } else {
                isShow(true)
            }
        }

        /**
         * 文本编辑框改变之后，
         * 判断是否需要显示后面的小图标
         * 该函数没有监听到 不知道是什么原因
         */
        override fun afterTextChanged(s: Editable?) {

        }
    }


}